package com.seal.commons.copiers;

import com.seal.commons.copiers.base.Copier;
import com.seal.commons.copiers.orika.OrikaCopier;

/**
 * 功能描述: <br/>
 *
 * @author yong.huang
 * @date: 2020-08-01 14:08<br/>
 * @since JDK 1.8
 */
public class BeanMapper {

    /**
     *  将源对象拷贝至目标对象
     * @param source 源对象
     * @return 目标对象
     */
    public static <T> T cglibCopy(Object source, Class<T> clazz) {
        if(source == null){
            return null;
        }
        Copier copiers = CopierFactory.getOrCreateOrikaCopier(source.getClass(), clazz);
        return (T) copiers.copy(source);
    }



    /**
     *  将源对象拷贝至目标对象
     * @param source 源对象
     * @return 目标对象
     */
    public static <T> T orikaCopy(Object source, Class<T> clazz) {
        OrikaCopier copiers =  CopierFactory.getOrCreateOrikaCopier(source.getClass(), clazz);
        return (T) copiers.copy(source);
    }

}